package library.Forms;

import javax.swing.ImageIcon;

/**
 * This interface defines the contract for any form to be used by the functions
 * and procedures of the SimpleExif_Library library
 *
 * @author JNC
 */
public interface FormInterface {

    /**
     * Constants defining the labels for the GO button
     * Public in order to be used from the FrameRemoteControl class
     */
    static final public String _LABEL_GO = "Go !";
    static final public String _LABEL_CANCEL = "Cancel !";
    
    /**
     * Disables all the commands of the frame
     * during the processing to avoid the user to start a new action
     */
    public void enableCommands(boolean myIsEnabled);
    
    /**
     * gets jShowPicturesLabel.
     * @return label that encloses the thumbnail.
     */
    public javax.swing.JLabel getShowPicturesLabel();
    
    /**
     * set the text in jFileNameBeforeLabel
     * @param myText
     */
    public void setFileNameBeforeLabelText(String myText);
    
    /**
     * set the text in jFileNameAfterLabel
     * @param myText
     */
    public void setFileNameAfterLabelText(String myText);
    
    /**
     * set the text in jTitleLabel
     * @param myText
     */
    public void setTitleLabelText(String myText);
    
    /**
     * set the text in jDigitalizationDateLabel
     * @param myText
     */
    public void setDigitalizationDateLabelText(String myText);
    
    /**
     * indicate if jShowPicturesCheckBox is checked
     * @return status of the checkbox that indicates if the thumbnail of the file
     * that is being processed must be shown
     */
    public boolean isShowPicturesCheckBoxSelected();
    
    /**
     * indicate if jShowLabelsCheckBox is checked
     * @return status of the checkbox that indicates if the details of the file
     * that is being processed must be shown
     */
    public boolean isShowLabelsCheckBoxSelected();

    /**
     * set the string in the progress bar
     * @param myMsg
     */
    public void setProgressBarString(String myMsg);
    
    /**
     * set the painting in the progress bar
     * @param myIsPainted
     */
    public void setProgressBarStringPainted(boolean myIsPainted);
    
    /**
     * set the progress bar in indeterminate mode
     * @param myIsIndeterminate
     */
    public void setProgressBarIndeterminate(boolean myIsIndeterminate);
    
    /**
     * Sets the progress value in the progress bar.
     * @param myValue
     * The progress value.
     */
    public void setProgressBarValue(int myValue);
    
    /**
     * Reinits the progress bar
     */
    public void reinitProgressBar();
    
    /**
     * gets the root pane.
     * @return
     * rootPane.
     */
    public javax.swing.JRootPane getRootPane();
    
    /**
     * set the image icon in jShowPictureLabel
     * @param myImageIcon
     */
    public void setShowPicturesLabelIcon(ImageIcon myImageIcon);

    /**
     * gets the width of the jShowPicturesLabel.
     * @return 
     * Width of the label that encloses the label.
     */
    public int getShowPicturesLabelWidth();

    /**
     * gets the height of the jShowPicturesLabel.
     * @return
     * Height of the label that encloses the label.
     */
    public int getShowPicturesLabelHeight();
    
    /**
     * Sets the text of the Go/Cancel button to Go
     */
    public void reinitGoCancelButton();
    
    /**
     * Activates/desactivates the GO/CANCEL button
     * @param myActivation Indicates if the button muts be activated (true) or desactivated (false)
     */
    public void activateGoCancelButton(boolean myActivation);
    
    /**
     * change the shape of the border of the text area
     * depending wether the scroll down is enabled or disabled
     * @param isTransient
     */
    public void changeBorderToTransient(boolean isTransient);
}
